package indi.madoka.weeb.enums;

import indi.madoka.weeb.bean.update.notice.GroupRecallNotice;
import indi.madoka.weeb.bean.update.notice.UpdateNotice;

/**
 * @author Arcueid
 */
public enum NoticeType {
    /**
     * 群消息撤回
     */
    GROUP_RECALL("group_recall",GroupRecallNotice.class),
    /**
     * 好友消息撤回
     */
    FRIEND_RECALL("friend_recall", null),
    /**
     * 群文件上传
     */
    GROUP_UPLOAD("group_upload", null),
    /**
     * 群管理员变更
     */
    GROUP_ADMIN("group_admin", null),
    /**
     * 群成员减少
     */
    GROUP_DECREASE("group_decrease", null),
    /**
     * 群成员增加
     */
    GROUP_INCREASE("group_increase", null),
    /**
     * 群成员禁言
     */
    GROUP_BAN("group_ban", null),
    /**
     * 好友添加
     */
    FRIEND_ADD("friend_add", null),
    /**
     * 群名片变更
     */
    GROUP_CARD("group_card", null),
    /**
     * 离线文件上传
     */
    OFFLINE_FILE("offline_file", null),
    /**
     * 客户端状态变更
     */
    CLIENT_STATUS("client_status", null),
    /**
     * 精华消息
     */
    ESSENCE("essence", null),
    /**
     * 系统通知
     */
    NOTIFY("notify", null);

    private final String value;
    private final Class<? extends  UpdateNotice> updateNoticeClass;

    NoticeType(String value, Class<? extends UpdateNotice> updateNoticeClass) {
        this.value = value;
        this.updateNoticeClass = updateNoticeClass;
    }

    public Class<? extends UpdateNotice> getUpdateNoticeClass() {
        return updateNoticeClass;
    }

    public String getValue() {
        return value;
    }
}
